#include <fstream>
#include <iostream>
#include <string>
// 根据不同操作系统包含相应的头文件
#ifdef _WIN32
#include <direct.h>
#define GETCWD _getcwd
#else
#include <unistd.h>
#define GETCWD getcwd
#endif

// 修正后的函数，将当前工作目录存入传入的缓冲区
void get_current_working_directory(char *currentworkingdirectory, size_t buffer_size)
{
    // 调用系统特定函数获取当前工作目录
    if (GETCWD(currentworkingdirectory, buffer_size) == nullptr)
    {
        throw std::runtime_error("无法获取当前工作目录");
    }
}

// 判断文件是否存在
bool fileExists(const std::string &filename)
{
    // 尝试以只读方式打开文件
    std::ifstream file(filename);
    return file.good();
}

// 判断文件是否存在，不存在则创建
bool ensureFileExists(const std::string &filename)
{
    // 检查文件是否已存在
    if (fileExists(filename))
    {
        return true;
    }

    // 创建新文件
    std::ofstream file(filename);
    if (!file.is_open())
    {
        std::cerr << "无法创建文件: " << filename << std::endl;
        return false;
    }

    // 可以在这里写入文件的初始内容
    // file << "这是新创建的文件" << std::endl;

    std::cout << "文件已创建: " << filename << std::endl;
    return true;
}
int checkFiles(std::string testFile)
{
    // 检查文件是否存在
    if (fileExists(testFile))
    {
        std::cout << "文件存在: " << testFile << std::endl;
        return 0;
    }
    else
    {
        std::cout << "文件不存在: " << testFile << std::endl;
        // 创建文件
        if (ensureFileExists(testFile))
        {
            std::cout << "操作成功" << std::endl;
        }
        else
        {
            std::cout << "操作失败" << std::endl;
        }
    }
    return 0;
}
